Security এবং User Privileges Management

Database Tutorials - টি-এসকিউএল (T-SQL)
346

Security এবং User Privileges Management ডেটাবেসের নিরাপত্তা এবং অ্যাক্সেস কন্ট্রোল ব্যবস্থাপনার গুরুত্বপূর্ণ অংশ। SQL Server-এ ডেটাবেসের নিরাপত্তা নিশ্চিত করতে User Privileges, Roles, Permissions, এবং Authentication Methods ব্যবহৃত হয়। সঠিক নিরাপত্তা কনফিগারেশন ডেটার সুরক্ষা নিশ্চিত করে এবং অবৈধ অ্যাক্সেস থেকে ডেটাবেস রক্ষা করে।


১. SQL Server Authentication Methods

SQL Server-এ দুটি প্রধান Authentication Methods ব্যবহৃত হয়:

  1. Windows Authentication:
    • এই পদ্ধতিতে, SQL Server ব্যবহারকারীর Windows অ্যাকাউন্টের মাধ্যমে লগইন এবং অ্যাক্সেস কন্ট্রোল পরিচালনা করে।
    • Integrated Security প্রদান করে, যা নিরাপদ এবং সহজে ব্যবহৃত হয় কারণ Windows নেটওয়ার্কের অংশ হিসেবে লগইন করা হয়।
  2. SQL Server Authentication:
    • এই পদ্ধতিতে, SQL Server নিজের ইউজারনেম এবং পাসওয়ার্ডের মাধ্যমে লগইন এবং অ্যাক্সেস কন্ট্রোল পরিচালনা করে।
    • এটি সাধারণত ব্যবহার হয় যখন Windows Authentication উপলব্ধ না থাকে বা বিভিন্ন নেটওয়ার্কের মধ্যে ব্যবহারকারীদের এক্সেস দেওয়া হয়।

২. User Creation and Management

SQL Server-এ ইউজার তৈরি এবং ম্যানেজ করতে CREATE USER এবং ALTER USER স্টেটমেন্ট ব্যবহার করা হয়।

CREATE USER সিনট্যাক্স:

CREATE USER username FOR LOGIN login_name;

এখানে:

  • username: ডেটাবেসে নতুন ইউজারের নাম।
  • login_name: SQL Server-এ লগইন করার জন্য ব্যবহৃত অ্যাকাউন্ট বা Windows অ্যাকাউন্টের নাম।

উদাহরণ:

CREATE USER JohnDoe FOR LOGIN JohnDoeLogin;

এটি একটি নতুন ইউজার JohnDoe তৈরি করবে এবং তাকে JohnDoeLogin লগইন অ্যাকাউন্টের সাথে যুক্ত করবে।


৩. User Permissions (অধিকার)

SQL Server-এ একটি ইউজারকে নির্দিষ্ট ডেটাবেস অপারেশন সম্পাদন করার জন্য অনুমতি (permissions) দেওয়া হয়। অনুমতি সাধারণত তিনটি স্তরে দেওয়া হয়:

  1. GRANT: ইউজারকে নির্দিষ্ট একটি পারমিশন দেওয়া।
  2. REVOKE: পূর্বে দেওয়া অনুমতি বাতিল করা।
  3. DENY: ইউজারকে নির্দিষ্ট পারমিশন অস্বীকার করা।

GRANT সিনট্যাক্স:

GRANT permission_type ON object TO user;

REVOKE সিনট্যাক্স:

REVOKE permission_type ON object TO user;

DENY সিনট্যাক্স:

DENY permission_type ON object TO user;

উদাহরণ:

GRANT SELECT, INSERT ON Employees TO JohnDoe;

এটি JohnDoe ইউজারকে Employees টেবিলে SELECT এবং INSERT পারমিশন দিবে।

DENY DELETE ON Employees TO JohnDoe;

এটি JohnDoe ইউজারকে Employees টেবিলের DELETE পারমিশন অস্বীকার করবে।


৪. Roles in SQL Server

SQL Server-এ Roles ব্যবহার করে একটি গ্রুপের মধ্যে একাধিক ইউজারকে একত্রিত করা হয়। Roles ইউজারদের অনুমতিগুলি পরিচালনা করতে সাহায্য করে। দুটি প্রধান ধরনের রোল আছে:

  1. Fixed Server Roles: এগুলি সার্ভার স্তরের অনুমতিগুলি নিয়ন্ত্রণ করে, যেমন sysadmin, dbcreator, ইত্যাদি।
  2. Fixed Database Roles: এগুলি ডেটাবেস স্তরের অনুমতিগুলি নিয়ন্ত্রণ করে, যেমন db_owner, db_datareader, ইত্যাদি।

CREATE ROLE সিনট্যাক্স:

CREATE ROLE role_name;

ALTER ROLE সিনট্যাক্স:

ALTER ROLE role_name ADD MEMBER user_name;

DROP ROLE সিনট্যাক্স:

DROP ROLE role_name;

উদাহরণ:

CREATE ROLE dbSalesRole;
ALTER ROLE dbSalesRole ADD MEMBER JohnDoe;

এটি একটি dbSalesRole রোল তৈরি করবে এবং JohnDoe ইউজারকে এই রোলের সদস্য হিসেবে যোগ করবে।


৫. Granting Permissions to Roles

Roles ব্যবহারের মাধ্যমে আপনি একাধিক ইউজারের জন্য একই ধরনের পারমিশন সেট করতে পারেন। Roles ব্যবহার করা ডেটাবেস পারমিশন ম্যানেজমেন্ট সহজ করে দেয়।

উদাহরণ:

GRANT SELECT, INSERT ON Employees TO dbSalesRole;

এটি dbSalesRole রোলের সদস্যদের Employees টেবিলে SELECT এবং INSERT পারমিশন দিবে।


৬. Viewing and Managing Permissions

SQL Server-এ ইউজারদের এবং রোলের পারমিশন দেখতে বা ম্যানেজ করতে বিভিন্ন কুয়েরি ব্যবহার করা হয়:

VIEW Permissions:

SELECT * FROM fn_my_permissions(NULL, 'DATABASE');

এটি বর্তমান ডেটাবেসে ইউজারের পারমিশন দেখাবে।

VIEW Permissions for Specific Object:

SELECT * FROM fn_my_permissions('Employees', 'OBJECT');

এটি Employees টেবিলের উপর ইউজারের পারমিশন দেখাবে।

Checking User Role Membership:

EXEC sp_helpuser;

এটি ডেটাবেসে সমস্ত ইউজারের রোল সদস্যপদ দেখাবে।


৭. Principals, Logins, and Users

SQL Server-এ Principals হল অ্যাক্সেস কন্ট্রোলের মূল উপাদান, যা Login, User, Role, এবং Application Role অন্তর্ভুক্ত করে। প্রতিটি Principal কে নির্দিষ্ট ডেটাবেস বা সার্ভার রিসোর্সে অ্যাক্সেস দেওয়া হয়।

Login:

  • Login হল SQL Server সার্ভারের উপর Authentication এবং অ্যাক্সেস কন্ট্রোলের জন্য ব্যবহৃত হয়। এটি Windows Authentication বা SQL Server Authentication ব্যবহার করতে পারে।

User:

  • User হল ডেটাবেস স্তরের একটি Principal যা Login এর সাথে যুক্ত থাকে এবং ডেটাবেসের মধ্যে সুনির্দিষ্ট পারমিশন এবং রোল প্রদান করে।

৮. Auditing and Monitoring User Activities

SQL Server-এ Audit Logs ব্যবহার করে ইউজারের কার্যক্রম মনিটর এবং ট্র্যাক করা যায়। SQL Server Audit একটি শক্তিশালী ফিচার যা ডেটাবেসের নিরাপত্তা এবং ইউজারের কার্যক্রমের উপর নজর রাখে। আপনি বিভিন্ন অ্যাকশন যেমন LOGIN, LOGOUT, SELECT, INSERT, ইত্যাদি ট্র্যাক করতে পারেন।

SQL Server Audit Example:

CREATE SERVER AUDIT MyAudit
TO FILE (FILEPATH = 'C:\AuditLogs\');

এটি একটি Server Audit তৈরি করবে এবং সমস্ত লগ FILE এ সংরক্ষণ করবে।


সারাংশ

Security এবং User Privileges Management SQL Server-এ ডেটাবেসের নিরাপত্তা নিশ্চিত করতে ব্যবহৃত হয়। এটি সঠিক Authentication Methods, User Permissions, Roles, এবং Privileges ব্যবহার করে ইউজারদের অ্যাক্সেস কন্ট্রোল এবং ডেটাবেসের সুরক্ষা ব্যবস্থাপনাকে সহজ ও কার্যকরী করে। SQL Server-এ Authentication Methods দুটি প্রধান পদ্ধতিতে হয়— Windows Authentication এবং SQL Server AuthenticationGRANT, REVOKE, এবং DENY স্টেটমেন্টের মাধ্যমে ইউজার এবং রোলের পারমিশন ম্যানেজ করা হয় এবং ইউজারের কার্যক্রম ট্র্যাক করতে Audit Logs ব্যবহার করা হয়।

Content added By

SQL Server এ User এবং Role ম্যানেজমেন্ট

280

SQL Server-এ User এবং Role ম্যানেজমেন্ট খুবই গুরুত্বপূর্ণ একটি বিষয়, কারণ এটি ডেটাবেস অ্যাক্সেস কন্ট্রোল এবং নিরাপত্তা নিশ্চিত করতে সহায়তা করে। Users হলো ডেটাবেসে যারা লগইন করে তাদের অ্যাক্সেস অনুমতি দেওয়া অ্যাকাউন্ট এবং Roles হলো একটি গ্রুপ যেখানে কিছু ইউজারকে একসাথে অ্যাক্সেস কন্ট্রোল দেওয়া হয়।

SQL Server-এ ইউজার এবং রোল ম্যানেজমেন্টের জন্য কিছু প্রধান কনসেপ্ট এবং কমান্ড রয়েছে যা ডেটাবেসের নিরাপত্তা ব্যবস্থা শক্তিশালী করে।


১. User Management

SQL Server-এ User তৈরি করা, পরিবর্তন করা, এবং মুছে ফেলার কাজগুলো করার জন্য আপনি CREATE USER, ALTER USER, এবং DROP USER কমান্ড ব্যবহার করতে পারেন। ইউজার তৈরির সময়, আপনি তাদের কী ধরনের অ্যাক্সেস দেওয়া হবে তা নির্ধারণ করবেন।

১.১ User তৈরি করা

একটি নতুন Database User তৈরি করার জন্য CREATE USER কমান্ড ব্যবহার করা হয়:

CREATE USER [username] FOR LOGIN [login_name];
  • username: ইউজারের নাম।
  • login_name: SQL Server লগইন যা ইউজারকে ডেটাবেসে অ্যাক্সেস দিতে ব্যবহৃত হবে।

উদাহরণ:

CREATE USER JohnDoe FOR LOGIN JohnDoeLogin;

এখানে, JohnDoeLogin হলো SQL Server লগইন এবং JohnDoe হলো ডেটাবেস ইউজার।

১.২ User এর Permission দেয়া

একটি ইউজারকে ডেটাবেসে নির্দিষ্ট পারমিশন (অধিকার) দিতে GRANT কমান্ড ব্যবহার করা হয়:

GRANT SELECT, INSERT, UPDATE ON table_name TO username;

এখানে, SELECT, INSERT, এবং UPDATE পারমিশন username ইউজারের জন্য দেওয়া হবে।

উদাহরণ:

GRANT SELECT, INSERT ON Employees TO JohnDoe;

এটি JohnDoe ইউজারকে Employees টেবিলের SELECT এবং INSERT পারমিশন দেয়।

১.৩ User এর Permission প্রত্যাহার (Revoke)

একটি ইউজারের কাছে দেওয়া পারমিশন প্রত্যাহার করতে REVOKE কমান্ড ব্যবহার করা হয়:

REVOKE SELECT ON table_name FROM username;

উদাহরণ:

REVOKE SELECT ON Employees FROM JohnDoe;

এটি JohnDoe ইউজারের SELECT পারমিশন Employees টেবিল থেকে প্রত্যাহার করবে।

১.৪ User মুছে ফেলা

একটি ইউজারকে ডেটাবেস থেকে মুছে ফেলতে DROP USER কমান্ড ব্যবহার করা হয়:

DROP USER username;

উদাহরণ:

DROP USER JohnDoe;

এটি JohnDoe ইউজারকে ডেটাবেস থেকে মুছে ফেলবে।


২. Role Management

Roles হল ডেটাবেসের মধ্যে ইউজারের একটি গ্রুপ, যার মাধ্যমে একসাথে একাধিক ইউজারের অ্যাক্সেস কন্ট্রোল করা হয়। Roles দুটি ধরনের হয়:

  • Fixed Roles: SQL Server দ্বারা প্রি-ডিফাইন করা রোল, যেমন db_owner, db_datareader ইত্যাদি।
  • User-defined Roles: কাস্টম রোল, যা ডেটাবেস অ্যাডমিনিস্ট্রেটর তৈরি করতে পারেন।

২.১ Role তৈরি করা

একটি User-defined Role তৈরি করতে CREATE ROLE কমান্ড ব্যবহার করা হয়:

CREATE ROLE role_name;

উদাহরণ:

CREATE ROLE db_report_viewer;

এটি db_report_viewer নামক একটি নতুন রোল তৈরি করবে।

২.২ User কে Role এ যুক্ত করা

একটি ইউজারকে রোলে যোগ করতে EXEC sp_addrolemember ব্যবহার করা হয়:

EXEC sp_addrolemember 'role_name', 'username';

উদাহরণ:

EXEC sp_addrolemember 'db_report_viewer', 'JohnDoe';

এটি JohnDoe ইউজারকে db_report_viewer রোলে যোগ করবে।

২.৩ User এর Role থেকে রিমুভ করা

একটি ইউজারকে রোল থেকে সরাতে EXEC sp_droprolemember ব্যবহার করা হয়:

EXEC sp_droprolemember 'role_name', 'username';

উদাহরণ:

EXEC sp_droprolemember 'db_report_viewer', 'JohnDoe';

এটি JohnDoe ইউজারকে db_report_viewer রোল থেকে সরিয়ে দেবে।

২.৪ Role এর Permission দেয়া

একটি রোলকে নির্দিষ্ট পারমিশন দিতে GRANT কমান্ড ব্যবহার করা হয়:

GRANT SELECT, INSERT ON table_name TO role_name;

উদাহরণ:

GRANT SELECT, INSERT ON Employees TO db_report_viewer;

এটি db_report_viewer রোলকে Employees টেবিলের SELECT এবং INSERT পারমিশন দিবে।

২.৫ Role মুছে ফেলা

একটি কাস্টম রোল মুছে ফেলতে DROP ROLE কমান্ড ব্যবহার করা হয়:

DROP ROLE role_name;

উদাহরণ:

DROP ROLE db_report_viewer;

এটি db_report_viewer রোলটি ডেটাবেস থেকে মুছে ফেলবে।


৩. Fixed Database Roles

SQL Server কিছু Fixed Database Roles প্রি-ডিফাইন করে দেয় যা সিস্টেমে প্রতিষ্ঠিত থাকে এবং ডেটাবেসের মধ্যে নিরাপত্তা এবং অ্যাক্সেস নিয়ন্ত্রণে ব্যবহৃত হয়।

উদাহরণ: Fixed Roles

  1. db_owner: এই রোলটি পূর্ণ ডেটাবেস অ্যাক্সেস দেয়, এবং সমস্ত ডেটাবেস অপারেশন পরিচালনা করতে পারে।
  2. db_datareader: এই রোলটি টেবিল থেকে ডেটা পড়তে (SELECT) পারমিশন দেয়, তবে ডেটা আপডেট বা মুছে ফেলতে পারবে না।
  3. db_datawriter: এই রোলটি টেবিলের ডেটা আপডেট এবং ইনসার্ট করতে পারমিশন দেয়।
  4. db_ddladmin: এই রোলটি ডেটাবেসে DDL (Data Definition Language) স্টেটমেন্ট যেমন টেবিল তৈরি বা পরিবর্তন করতে পারমিশন দেয়।

৪. User এবং Role এর মধ্যে সম্পর্ক

  • Users হল ডেটাবেসে লোগইন করা অ্যাকাউন্ট যারা ডেটাবেসের উপাদান (টেবিল, ভিউ, প্রোসিজিউর ইত্যাদি) অ্যাক্সেস করতে পারে।
  • Roles হলো ইউজারের গ্রুপ, যার মাধ্যমে একসাথে একাধিক ইউজারকে নির্দিষ্ট পারমিশন দেওয়া যায়। ইউজাররা রোলের সদস্য হিসেবে পারমিশন অর্জন করে।

সারাংশ

  • User Management: SQL Server-এ ইউজার তৈরি, পরিবর্তন, এবং মুছে ফেলার জন্য CREATE USER, ALTER USER, এবং DROP USER ব্যবহার করা হয়। ইউজারের কাছে নির্দিষ্ট পারমিশন বা অ্যাক্সেস কন্ট্রোল দেওয়ার জন্য GRANT কমান্ড ব্যবহার করা হয়।
  • Role Management: Roles ব্যবহার করে ইউজারদের অ্যাক্সেস কন্ট্রোল সহজে পরিচালনা করা হয়। CREATE ROLE, GRANT, REVOKE, এবং DROP ROLE কমান্ডগুলির মাধ্যমে রোল তৈরি, পরিবর্তন এবং মুছে ফেলা হয়।
  • Fixed Roles: SQL Server প্রি-ডিফাইন করা Fixed Roles প্রদান করে, যা ডেটাবেসের নিরাপত্তা নিশ্চিত করে।
Content added By

GRANT, REVOKE, এবং DENY স্টেটমেন্ট

309

T-SQL (Transact-SQL) এ GRANT, REVOKE, এবং DENY স্টেটমেন্ট ব্যবহার করে আপনি ব্যবহারকারীদের (users) বা রোলস (roles) এর বিভিন্ন পারমিশন (permissions) নিয়ন্ত্রণ করতে পারেন। এগুলি Access Control এর অংশ এবং আপনার ডেটাবেস সিকিউরিটি নিশ্চিত করতে সাহায্য করে।

1. GRANT (গ্রান্ট)

GRANT স্টেটমেন্ট ব্যবহার করে একটি নির্দিষ্ট ব্যবহারকারী বা রোলকে নির্দিষ্ট ডেটাবেস অবজেক্টের জন্য পারমিশন দেওয়া হয়। এটি ব্যবহারকারীদের ডেটাবেসে কাজ করার অনুমতি প্রদান করে।

সিনট্যাক্স:

GRANT permission_type 
ON object_name
TO user_or_role;
  • permission_type: যে পারমিশনটি আপনি প্রদান করতে চান (যেমন SELECT, INSERT, UPDATE, DELETE, EXECUTE, ইত্যাদি)।
  • object_name: যে টেবিল বা অবজেক্টে আপনি পারমিশন প্রদান করতে চান।
  • user_or_role: যাকে বা যাদের আপনি পারমিশন দিতে চান (ব্যবহারকারী বা রোল)।

উদাহরণ ১: SELECT পারমিশন গ্রান্ট করা:

GRANT SELECT 
ON Employees 
TO JohnDoe;

এই কমান্ডটি JohnDoe ব্যবহারকারীকে Employees টেবিলের SELECT পারমিশন দেবে, যাতে সে টেবিল থেকে ডেটা দেখতে পারে।

উদাহরণ ২: INSERT এবং UPDATE পারমিশন গ্রান্ট করা:

GRANT INSERT, UPDATE 
ON Employees 
TO AdminRole;

এই কমান্ডটি AdminRole রোলকে Employees টেবিলের INSERT এবং UPDATE পারমিশন দেবে, যাতে তারা ডেটা যোগ এবং আপডেট করতে পারে।


2. REVOKE (রিভোক)

REVOKE স্টেটমেন্ট ব্যবহার করে পূর্বে দেয়া পারমিশন ফিরিয়ে নেয়া হয়। এটি ব্যবহৃত হয় যখন ব্যবহারকারী বা রোল থেকে পূর্বে প্রদত্ত পারমিশন বাতিল করতে হয়।

সিনট্যাক্স:

REVOKE permission_type
ON object_name
FROM user_or_role;
  • permission_type: যে পারমিশনটি আপনি ফিরিয়ে নিতে চান।
  • object_name: যে টেবিল বা অবজেক্ট থেকে আপনি পারমিশন বাতিল করতে চান।
  • user_or_role: যাকে বা যাদের থেকে আপনি পারমিশন বাতিল করতে চান।

উদাহরণ ১: SELECT পারমিশন রিভোক করা:

REVOKE SELECT 
ON Employees 
FROM JohnDoe;

এই কমান্ডটি JohnDoe ব্যবহারকারীর Employees টেবিলের SELECT পারমিশন বাতিল করবে।

উদাহরণ ২: INSERT পারমিশন রিভোক করা:

REVOKE INSERT 
ON Employees 
FROM AdminRole;

এই কমান্ডটি AdminRole রোলের Employees টেবিলের INSERT পারমিশন বাতিল করবে।


3. DENY (ডেনাই)

DENY স্টেটমেন্ট ব্যবহার করে আপনি নির্দিষ্ট একটি ব্যবহারকারী বা রোলকে কোনো পারমিশন দিতে বাধা সৃষ্টি করতে পারেন, অর্থাৎ, তাদের সেই নির্দিষ্ট পারমিশন অ্যাক্সেস না করার জন্য মানা করা হয়। DENY এর প্রয়োগ GRANT এবং REVOKE এর থেকে বেশি প্রাধান্য পায়। যখন DENY করা হয়, তখন কোনো অবস্থাতেই সেই পারমিশন দেওয়া যাবে না, এমনকি যদি GRANT করা হয়।

সিনট্যাক্স:

DENY permission_type
ON object_name
TO user_or_role;
  • permission_type: যে পারমিশনটি আপনি নিষিদ্ধ করতে চান।
  • object_name: যে টেবিল বা অবজেক্ট থেকে আপনি পারমিশন নিষিদ্ধ করতে চান।
  • user_or_role: যাকে বা যাদের আপনি পারমিশন নিষিদ্ধ করতে চান।

উদাহরণ ১: DELETE পারমিশন ডেনাই করা:

DENY DELETE 
ON Employees 
TO JohnDoe;

এই কমান্ডটি JohnDoe ব্যবহারকারীকে Employees টেবিলের DELETE পারমিশন দিবে না, অর্থাৎ সে টেবিল থেকে ডেটা মুছে ফেলতে পারবে না।

উদাহরণ ২: UPDATE পারমিশন ডেনাই করা:

DENY UPDATE 
ON Employees 
TO AdminRole;

এই কমান্ডটি AdminRole রোলের Employees টেবিলের UPDATE পারমিশন নিষিদ্ধ করবে।


GRANT, REVOKE, এবং DENY এর পার্থক্য

ফিচারGRANTREVOKEDENY
Purposeপারমিশন প্রদান করতে।পূর্বে দেওয়া পারমিশন বাতিল করতে।নির্দিষ্ট পারমিশন থেকে ব্যবহারকারীকে নিষিদ্ধ করতে।
Prioritizationসাধারণত REVOKE এর সাথে কাজ করে।GRANT এর মাধ্যমে প্রদান করা পারমিশন বাতিল করতে।DENY স্টেটমেন্ট GRANT এবং REVOKE এর চেয়ে বেশি প্রাধান্য পায়।
Effect on Permissionsঅনুমতি প্রদান করে।পূর্বে প্রদত্ত অনুমতি বাতিল করে।অনুমতি অ্যাক্সেস বন্ধ করে দেয়।
Use Caseনতুন পারমিশন দেওয়া।পূর্বের অনুমতি বাতিল করা।অনুমতি একেবারে নিষিদ্ধ করা।

উপসংহার:

GRANT, REVOKE, এবং DENY T-SQL এর পারমিশন ব্যবস্থাপনার গুরুত্বপূর্ণ অংশ। GRANT ব্যবহার করে ব্যবহারকারী বা রোলকে পারমিশন দেওয়া হয়, REVOKE দিয়ে পূর্বে প্রদত্ত পারমিশন বাতিল করা হয়, এবং DENY ব্যবহার করে বিশেষভাবে একটি ব্যবহারকারী বা রোলকে নির্দিষ্ট পারমিশন অপ্রাপ্ত করে দেয়া হয়। এগুলি আপনার ডেটাবেস অ্যাক্সেস সিকিউরিটি এবং ব্যবহারের জন্য অপরিহার্য টুল।

Content added By

Database Security এবং Encryption

352

Database Security এবং Encryption ডেটাবেসে ডেটার সুরক্ষা এবং গোপনীয়তা বজায় রাখার জন্য অত্যন্ত গুরুত্বপূর্ণ কৌশল। এগুলি ডেটাবেসের মধ্যে সংরক্ষিত তথ্যকে অরথোরাইজড অ্যাক্সেস, চুরি, বা হ্যাকিং থেকে রক্ষা করতে সহায়ক। এই ধারণাগুলি ডেটাবেস ম্যানেজমেন্ট সিস্টেম (DBMS) এর মধ্যে ব্যবহৃত হয় যাতে ডেটা নিরাপদ থাকে এবং ডেটাবেস অ্যাক্সেস শুধুমাত্র অনুমোদিত ব্যবহারকারীদের কাছে সীমাবদ্ধ থাকে।


1. Database Security

Database Security হল একটি প্রসেস যা ডেটাবেস থেকে তথ্য চুরি, ক্ষতি বা পরিবর্তন থেকে রক্ষা করতে বিভিন্ন পদ্ধতি এবং কৌশল ব্যবহার করে। ডেটাবেস সিকিউরিটি একটি মডিউল হিসাবে কাজ করে যা নিশ্চিত করে যে ডেটাবেসের শুধুমাত্র অনুমোদিত ব্যবহারকারীরা অ্যাক্সেস পায় এবং তাদের কার্যক্রম ট্র্যাক করা হয়। এর প্রধান উদ্দেশ্য হল ডেটা কনফিডেনশিয়ালিটি, ইন্টিগ্রিটি এবং অ্যাভেইলেবিলিটি রক্ষা করা।

ডেটাবেস সিকিউরিটি কৌশলগুলি:

  1. Access Control:
    • Access Control নিশ্চিত করে যে শুধুমাত্র অনুমোদিত ব্যবহারকারীরা ডেটাবেসের নির্দিষ্ট অংশে অ্যাক্সেস করতে পারে। এর মধ্যে অন্তর্ভুক্ত রয়েছে:
      • Authentication: ব্যবহারকারীকে সিস্টেমে লগ ইন করার জন্য পরিচয় যাচাই করা।
      • Authorization: ব্যবহারকারীকে নির্দিষ্ট টেবিল, কলাম বা ডেটাবেসের ওপর কোন অ্যাক্সেস দেওয়া যাবে তা নিয়ন্ত্রণ করা।
  2. Role-Based Access Control (RBAC):
    • RBAC একটি নিরাপত্তা পদ্ধতি যা ব্যবহারকারীদের এক বা একাধিক রোল অ্যাসাইন করে এবং সেই রোলের ভিত্তিতে তাদের ডেটাবেস অ্যাক্সেস অনুমোদন করে।
    • উদাহরণ: একাধিক রোল যেমন Admin, ReadOnly, এবং Developer তৈরি করা হয়, এবং তাদের মধ্যে বিভিন্ন অনুমতিসমূহ (পড়তে, আপডেট করতে, ডিলিট করতে) সীমাবদ্ধ করা হয়।
  3. Audit and Monitoring:
    • ডেটাবেসের Audit এবং Monitoring ব্যবহারকারীর কার্যকলাপ এবং সিস্টেমের সুরক্ষিত থাকা নিশ্চিত করে। এটি একটি টুল যা লগ ফাইল এবং ডেটাবেস ট্রানজেকশন মনিটর করে যাতে অনুমোদিত বা অস্বাভাবিক অ্যাক্সেস এবং পরিবর্তনগুলো নজরদারি করা যায়।
  4. Encryption:
    • ডেটা Encryption সিস্টেমে সংরক্ষিত বা ট্রান্সমিট করা ডেটা এনক্রিপ্ট করে, যাতে তা চুরি বা হারানোর পরও নিরাপদ থাকে।
  5. Backup Security:
    • সঠিকভাবে ব্যাকআপ এবং রিস্টোর কৌশল ব্যবহার করা ডেটা রক্ষা করতে সাহায্য করে। ব্যাকআপে থাকা ডেটাও এনক্রিপ্ট করা উচিত।

2. Encryption

Encryption হল এমন একটি প্রক্রিয়া যা ডেটাকে এমন একটি ফর্মে রূপান্তরিত করে যাতে এটি শুধুমাত্র অনুমোদিত ব্যক্তি বা সিস্টেম দ্বারা পড়া বা ব্যাখ্যা করা যায়। এনক্রিপশন ডেটা সুরক্ষিত রাখার জন্য একটি অত্যন্ত কার্যকরী কৌশল। এটি দুটি প্রধান অবস্থানে প্রয়োগ করা যেতে পারে: At Rest এবং In Transit

Encryption Types:

  1. At Rest Encryption:
    • At Rest হল এমন ডেটা যা সিস্টেমে ডেটাবেস, ফাইল সিস্টেম বা ডিস্কে সংরক্ষিত থাকে। যখন ডেটা স্টোরেজে (যেমন ডিস্ক বা ডেটাবেস) থাকে, তখন তাকে এনক্রিপ্ট করা হয়।
    • উদাহরণ: Transparent Data Encryption (TDE), যা SQL Server-এ ব্যবহার করা হয়।
  2. In Transit Encryption:
    • In Transit হল সেই ডেটা যা নেটওয়ার্কের মাধ্যমে ট্রান্সফার হচ্ছে। এটি এনক্রিপ্ট করার মাধ্যমে নিশ্চিত করা হয় যে ডেটার আদান-প্রদান করার সময় তা আক্রমণকারী বা থার্ড-পার্টি দ্বারা পড়া বা পরিবর্তন করা সম্ভব হবে না।
    • উদাহরণ: TLS/SSL Encryption যা HTTP বা TCP/IP প্রোটোকলের মধ্যে নিরাপদ ডেটা ট্রান্সফারের জন্য ব্যবহৃত হয়।

Encryption Methods:

  1. Symmetric Encryption:
    • Symmetric Encryption এ একক কী (যা "সিক্রেট কী" নামে পরিচিত) ব্যবহার করা হয় ডেটা এনক্রিপ্ট এবং ডিক্রিপ্ট করতে। ডেটা এনক্রিপ্ট এবং ডিক্রিপ্ট করার জন্য একই কী ব্যবহৃত হয়।
    • উদাহরণ: AES (Advanced Encryption Standard)
  2. Asymmetric Encryption:
    • Asymmetric Encryption এ দুটি কী ব্যবহৃত হয়: একটি পাবলিক কী এবং একটি প্রাইভেট কী। পাবলিক কী ব্যবহার করে ডেটা এনক্রিপ্ট করা হয়, এবং প্রাইভেট কী ব্যবহার করে সেই ডেটা ডিক্রিপ্ট করা হয়।
    • উদাহরণ: RSA Encryption

3. Encryption in SQL Server

SQL Server এ ডেটা এনক্রিপশনের জন্য বিভিন্ন পদ্ধতি ব্যবহৃত হয়। এগুলি প্রধানত Transparent Data Encryption (TDE) এবং Always Encrypted

Transparent Data Encryption (TDE):

  • TDE ডেটাবেস ফাইল সিস্টেমের স্তরে ডেটা এনক্রিপ্ট করে। এটি SQL Server এ ডেটা স্টোরেজ (ফাইল, ব্যাকআপ, ইত্যাদি) এনক্রিপ্ট করে, এবং কোনও অ্যাপ্লিকেশন বা ব্যবহারকারীর জন্য স্বচ্ছ থাকে। TDE সাধারণত at rest এনক্রিপশন হিসেবে ব্যবহৃত হয়।

    -- TDE এ এনক্রিপশন চালু করা
    CREATE DATABASE EncryptedDB;
    ALTER DATABASE EncryptedDB SET ENCRYPTION ON;
    

Always Encrypted:

  • Always Encrypted ডেটা এনক্রিপশন অ্যাপ্লিকেশন লেভেলে সম্পাদিত হয় এবং SQL Server এবং Client Application এর মধ্যে ডেটা ট্রান্সফারের সময় ডেটা এনক্রিপ্ট ও ডিক্রিপ্ট করা হয়।

    -- Always Encrypted কলাম তৈরি করা
    CREATE TABLE Employees (
        EmployeeID INT PRIMARY KEY,
        Name NVARCHAR(100),
        SSN NVARCHAR(100) ENCRYPTED WITH (ENCRYPTION_TYPE = 'Deterministic', ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_512')
    );
    

4. Database Security Best Practices

  1. Strong Authentication:
    • শক্তিশালী পাসওয়ার্ড এবং Multi-Factor Authentication (MFA) ব্যবহার করুন।
  2. Role-based Access Control (RBAC):
    • ব্যবহারকারীদের সঠিক রোল বরাদ্দ করুন এবং Principle of Least Privilege অনুসরণ করুন, যেখানে প্রতিটি ব্যবহারকারী তাদের কাজের জন্য প্রয়োজনীয় সর্বনিম্ন অ্যাক্সেস পায়।
  3. Regular Backup and Encryption:
    • ব্যাকআপকে এনক্রিপ্ট করুন এবং নিয়মিত ব্যাকআপ তৈরি করুন।
  4. Regular Audits and Monitoring:
    • Audit Logs তৈরি করুন এবং নিয়মিত মনিটরিং চালান, যাতে আপনি কোনও অস্বাভাবিক কার্যক্রম শনাক্ত করতে পারেন।
  5. Patch Management:
    • ডেটাবেস সিস্টেম এবং সফটওয়্যারের জন্য নিয়মিত প্যাচ এবং আপডেট প্রয়োগ করুন যাতে নিরাপত্তা দুর্বলতা দূর করা যায়।

সারাংশ

  • Database Security ডেটাবেসে ডেটার সুরক্ষা নিশ্চিত করতে বিভিন্ন কৌশল ব্যবহৃত হয়, যেমন অ্যাক্সেস কন্ট্রোল, অডিটিং, এবং এনক্রিপশন।
  • Encryption ডেটার গোপনীয়তা এবং নিরাপত্তা নিশ্চিত করার জন্য ব্যবহৃত হয়, যা At Rest এবং In Transit ডেটা এনক্রিপশন সহ বিভিন্ন পদ্ধতির মাধ্যমে কার্যকরী হয়।
  • SQL Server-এ Transparent Data Encryption (TDE) এবং Always Encrypted এর মতো বৈশিষ্ট্য ডেটা এনক্রিপশনের জন্য ব্যবহৃত হয়।

Database Security এবং Encryption একটি গুরুত্বপূর্ণ কৌশল যা ডেটাবেসে সংরক্ষিত তথ্যকে সুরক্ষিত রাখতে সাহায্য করে, এবং ডেটার নিরাপত্তা বজায় রাখে।

Content added By

T-SQL দিয়ে সিকিউরিটি সেটআপ

307

T-SQL (Transact-SQL) দিয়ে SQL Server-এ সিকিউরিটি সেটআপ করা খুবই গুরুত্বপূর্ণ, বিশেষত যখন আপনি ডেটাবেস অ্যাক্সেস কন্ট্রোল এবং ইউজার পারমিশন নিয়ন্ত্রণ করতে চান। SQL Server-এ সিকিউরিটি সেটআপের জন্য অ্যাকাউন্ট, রোল, পারমিশন, অথেনটিকেশন মেথড, এবং ইনক্রিপশন ব্যবহার করা হয়।

T-SQL দিয়ে আপনি ডেটাবেসের নিরাপত্তা নিশ্চিত করতে পারেন, যেমন:

  • ইউজার এবং রোল তৈরি করা
  • ইউজারের অ্যাক্সেস কন্ট্রোল
  • পারমিশন পরিচালনা করা
  • ইনক্রিপশন কনফিগার করা

নিচে T-SQL দিয়ে SQL Server সিকিউরিটি সেটআপ এর কিছু গুরুত্বপূর্ণ দিক আলোচনা করা হলো:


১. SQL Server Authentication Mode সেটআপ

SQL Server-এ দুটি প্রধান অথেনটিকেশন মোড রয়েছে:

  1. Windows Authentication: এটি শুধুমাত্র Windows ব্যবহারকারীদের জন্য অনুমোদিত।
  2. SQL Server Authentication: এই মোডে SQL Server-এ একটি নির্দিষ্ট SQL Server Login ব্যবহারকারীর নাম এবং পাসওয়ার্ড ব্যবহার করে লগইন করা হয়।

Windows Authentication Mode সক্রিয় করা:

-- SQL Server Authentication এবং Windows Authentication মোড সক্রিয় করা
ALTER LOGIN [sa] ENABLE;

SQL Server Authentication Mode সক্রিয় করা:

-- SQL Server Authentication মোড সক্রিয় করা
ALTER LOGIN [sa] WITH PASSWORD = 'NewPassword';

২. Login এবং User তৈরি করা

SQL Server-এ ইউজার তৈরি করার জন্য প্রথমে একটি Login তৈরি করতে হয়, তারপর সেটি ডেটাবেসের মধ্যে একটি User হিসেবে সংযুক্ত করতে হয়।

Login তৈরি করা:

-- SQL Server Login তৈরি করা
CREATE LOGIN NewUser WITH PASSWORD = 'StrongPassword';

User তৈরি করা:

-- একটি নির্দিষ্ট ডেটাবেসে User তৈরি করা
USE YourDatabase;
CREATE USER NewUser FOR LOGIN NewUser;

৩. Role এবং Permissions সেট করা

SQL Server-এ Roles ব্যবহার করে আপনি ইউজারদের গ্রুপে বিভক্ত করতে পারেন এবং গ্রুপের জন্য একযোগভাবে পারমিশন সেট করতে পারেন।

SQL Server Roles:

SQL Server এ কিছু বিল্ট-ইন রোল রয়েছে যেমন:

  • sysadmin: পুরো সার্ভারের জন্য সর্বোচ্চ পারমিশন।
  • db_owner: ডেটাবেসের সমস্ত কার্যক্রম পরিচালনা করতে পারে।
  • db_datareader: ডেটাবেসের টেবিল পড়তে পারে।
  • db_datawriter: ডেটাবেসের টেবিল লিখতে পারে।

Role Assignment:

-- একটি ইউজারকে একটি রোল দেয়া
USE YourDatabase;
EXEC sp_addrolemember 'db_datareader', 'NewUser';

Custom Role তৈরি করা:

-- একটি কাস্টম রোল তৈরি করা
USE YourDatabase;
CREATE ROLE CustomRole;
EXEC sp_addrolemember 'CustomRole', 'NewUser';

Permissions Assignment:

-- একটি নির্দিষ্ট টেবিলের জন্য পারমিশন দেয়া
GRANT SELECT, INSERT ON dbo.Employees TO NewUser;

৪. Revoke এবং Deny Permissions

  • REVOKE: পূর্বে প্রদত্ত পারমিশনকে বাতিল করে, তবে পরবর্তী সময়ে পারমিশন পুনরায় দেওয়ার সুযোগ থাকে।
  • DENY: একটি নির্দিষ্ট ইউজারের জন্য একেবারে পারমিশন বাধা দেয়।

Revoke Permissions:

-- একটি ইউজারের SELECT পারমিশন রেভোক করা
REVOKE SELECT ON dbo.Employees FROM NewUser;

Deny Permissions:

-- একটি ইউজারকে কোনো টেবিলের উপর পারমিশন Deny করা
DENY DELETE ON dbo.Employees TO NewUser;

৫. User-এ Specific Column Permissions

আপনি বিশেষ করে কিছু কলামের জন্যও পারমিশন কন্ট্রোল করতে পারেন। যেমন, একটি টেবিলের নির্দিষ্ট কলামের উপর SELECT, UPDATE পারমিশন দেওয়া।

-- একটি নির্দিষ্ট কলামের উপর পারমিশন প্রদান করা
GRANT SELECT, UPDATE (Salary) ON dbo.Employees TO NewUser;

৬. Inactivity Lock (Idle Session Timeout)

SQL Server-এ কোনও ইউজারের সেশন অপ্রয়োজনীয় বা ইনঅ্যাকটিভ হলে তা অটোমেটিকভাবে লক করার জন্য পারামিটার সেট করা যায়, যা সিকিউরিটি বাড়ায়।

-- SQL Server সার্ভারে ইনঅ্যাকটিভ সেশন লক করার জন্য পরামিটার সেট করা
EXEC sp_configure 'user options', 0;
RECONFIGURE;

৭. SQL Server Data Encryption

SQL Server ডেটা ইনক্রিপশন সমর্থন করে, যাতে ডেটাবেসের সংবেদনশীল ডেটা সুরক্ষিত থাকে। এর জন্য Transparent Data Encryption (TDE) ব্যবহার করা যেতে পারে।

TDE সক্রিয় করা:

-- ডেটাবেসে TDE সক্রিয় করা
CREATE DATABASE ENCRYPTION KEY;
ALTER DATABASE YourDatabase SET ENCRYPTION ON;

৮. Auditing:

SQL Server-এ Auditing কার্যক্রমের মাধ্যমে আপনি ডেটাবেসে কে, কখন, কী ধরনের কার্যক্রম করেছে তা ট্র্যাক করতে পারেন।

SQL Server Audit তৈরি করা:

-- SQL Server Audit তৈরি করা
CREATE SERVER AUDIT LoginAudit
TO FILE (FILEPATH = 'C:\SQLAudit\');
ALTER SERVER AUDIT LoginAudit WITH (STATE = ON);

সারাংশ

T-SQL দিয়ে SQL Server-এর সিকিউরিটি সেটআপে বিভিন্ন ধাপ রয়েছে, যার মধ্যে:

  1. Login এবং User তৈরি করা,
  2. Roles এবং Permissions ব্যবস্থাপনা করা,
  3. Encryption এবং Audit কনফিগার করা,
  4. Authentication Mode কনফিগার করা।

T-SQL এবং SQL Server-এ সিকিউরিটি সেটআপ করার মাধ্যমে আপনি ডেটাবেস অ্যাক্সেস কন্ট্রোল, পারমিশন ম্যানেজমেন্ট, এবং সিকিউরিটি নিশ্চিত করতে পারেন।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...